<template>
  <div class="import">
    <upload-excel :beforeUpload="beforeUpload" :onSuccess="onSuccess" />
  </div>
</template>

<script>
import { batchEmp } from '@/api/employees'
export default {
  name: 'import',
  methods: {
    beforeUpload (file) {
      if (file.size > 1024 * 2 * 1024) {
        this.$message.error('文件大小不能超过2M')
        return false
      }
      return true
    },

    //  使用对象的解构语法直接用到results
    async onSuccess ({ header, results }) {
      if (this.$route.query.type == 'employees') {
        // 因为excel里的标题是中文的，然后读取出来的结果就也会是中文的
        // 所以我们要对它进行转换，把中文转成对应的英文
        const userRelations = {
          入职日期: 'timeOfEntry',
          手机号: 'mobile',
          姓名: 'username',
          转正日期: 'correctionTime',
          工号: 'workNumber'
        }
        console.log(results)

        // 遍历读取到的内容
        let list = results.map(item => {
          let newObj = {}
          // 还要遍历这个对象，把每个键替换成英文
          for (let key in item) {
            // key就是中文键，再根据上面的对象转换成英文键
            let engKey = userRelations[key]
            // 先判断当前的key是不是时间
            if (key == '入职日期' || key == '转正日期') {
              let excelTime = item[key]
              // 转成JS时间
              let date = new Date((excelTime - 1) * 24 * 60 * 60 * 1000)
              let year = date.getFullYear()
              date.setFullYear(year - 70)
              newObj[engKey] = date
            } else {
              // 把原来对象里的值赋值给新对象，并且是存到新的英文键对应的属性上
              newObj[engKey] = item[key]
            }
          }

          return newObj
        })

        // 把读取到的excel内容通过调用接口传递给服务器
        await batchEmp(list)
        this.$message.success('导入成功！')
        this.$router.back()
      }
    }
  }
}
</script>

<style></style>
